package com.wrt.wm.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;

import com.wrt.wm.config.StaticParameters;
import com.wrt.wm.entity.AjaxResult;
import com.wrt.wm.entity.FontParameters;
import com.wrt.wm.service.WaterMarkService;

/**
 * 图片上传接口
 * 
 * @author 文瑞涛
 */
@RestController
@RequestMapping({ "/upload" })
public class ImageUploadController {
	
	@Autowired
	private WaterMarkService waterMarkService;

	/**
	 * 
	 * 图片上传及处理接口（文字水印）
	 * 
	 * @param request http请求
	 * @param fileInputName 用于从请求中获取文件对象的名称
	 * @param waterMarkContent 水印内容
	 * 
	 * @return 封装后的结果
	 *
	 */
	@PostMapping
	public AjaxResult upload(MultipartHttpServletRequest request, String fileInputName, String waterMarkContent) {
		MultipartFile file = request.getFile(fileInputName);
		if (file != null && !file.isEmpty()) {
			return waterMarkService.addWordMark(file, waterMarkContent, (FontParameters) request.getSession().getAttribute(StaticParameters.FONTPARAM));
		} else {
			return AjaxResult.fail("后台没有收到文件");
		}
	}

	/**
	 * 
	 * 图片上传及处理接口（图片水印）
	 * 
	 * @param request http请求
	 * @param fileInputNames 用于从请求中获取文件对象的名称
	 * @param pname 水印位置枚举名称
	 * @param alpha 透明度
	 * 
	 * @return 封装后的结果
	 *
	 */
	@PostMapping("uploadimg")
	public AjaxResult uploadimg(MultipartHttpServletRequest request, String fileInputNames, String pname, Float alpha) {
		String[] filenames = fileInputNames.split(StaticParameters.COMMA);
		MultipartFile srcfile = request.getFile(filenames[0]);
		MultipartFile wmfile = request.getFile(filenames[1]);
		if (receiveFiles(srcfile, wmfile)) {
			return waterMarkService.addImgMark(srcfile, wmfile, pname, alpha);
		} else {
			return AjaxResult.fail("后台没有收到文件");
		}
	}

	/**
	 * 
	 * 判断是否接收到文件（图片水印）
	 * 
	 * @param srcfile 待处理的文件对象
	 * @param wmfile 水印图片文件对象
	 * 
	 * @return true-文件正常接收;false-文件未正确接收
	 *
	 */
	private boolean receiveFiles(MultipartFile srcfile, MultipartFile wmfile) {
		return srcfile != null && !srcfile.isEmpty() && wmfile != null && !wmfile.isEmpty();
	}
	
}
